"""
文件类的抽象类
"""
import json

from day05_面对对象.data_define import Record


class FileReader:

    def read_data(self) -> list[Record]:
        """
        读取文件的数据，并将数据封装到list中
        :return:
        """
        pass


class TextFileReader(FileReader):
    """
    读取文本文件的类
    """

    def __init__(self, path):
        self.path = path

    # 重写父类的方法
    def read_data(self) -> list[Record]:
        """
        读取文本文件（其实是CSV格式）的数据，并将数据封装到list中
        :return:
        """
        f = open(self.path, 'r', encoding='utf-8')
        record_list = list()
        for line in f.readlines():
            # 消除回车\n
            line = line.strip()
            # 消除逗号，并获得一个列表
            data_list = line.split(',')
            # 将得到的列表封装到Record对象
            record = Record(data_list[0], data_list[1], int(data_list[2]), data_list[3])
            record_list.append(record)

        f.close()
        return record_list


class JsonFileRead(FileReader):
    """
    读取JSON格式的文件
    """

    def __init__(self, path):
        self.path = path

    def read_data(self) -> list[Record]:
        f = open(self.path, 'r', encoding='utf-8')
        record_list = list()
        for line in f.readlines():
            # 将JSON数据转成Python数据
            data_dict = json.loads(line)
            # 将得到的列表封装到Record对象
            record = Record(data_dict['date'], data_dict['order_id'], int(data_dict['money']), data_dict['province'])
            record_list.append(record)

        f.close()
        return record_list


if __name__ == '__main__':
    tfr = TextFileReader('E:/project/Python/day05_面对对象/resources/2011年1月销售数据.txt')
    print(tfr.read_data()[0])
    jfr = JsonFileRead('E:/project/Python/day05_面对对象/resources/2011年2月销售数据JSON.txt')
    print(jfr.read_data()[0])

